package org.esprit.ocm.client.rpc.oca;

import java.util.List;

import org.esprit.ocm.model.oca.VnetOca;

import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;

@RemoteServiceRelativePath("VirtualNetworkOcaService.rpc")
public interface VirtualNetworkOcaService extends RemoteService {

	/**
	 * List All vms
	 * 
	 * @param client
	 * @return
	 * @throws Exception
	 */
	public List<VnetOca> listAll(String secret, String endpoint, int filter) throws Exception;

	/**
	 * Create New vnet
	 * 
	 * @param client
	 * @param template
	 * @param image
	 * @return
	 * @throws Exception
	 */
	public String allocate(String secret, String endpoint, String template) throws Exception;

	/**
	 * Delete an vnet
	 * 
	 * @param client
	 * @param vnetId
	 * @return 
	 * @throws Exception
	 */
	public String delete(String secret, String endpoint, int vnetId) throws Exception;

	/**
	 * Describe vnet information
	 * 
	 * @param client
	 * @param vnetId
	 * @return
	 * @throws Exception
	 */
	public VnetOca info(String secret, String endpoint, int vnetId) throws Exception;

	/**
	 * publish vnet
	 * 
	 * @param client
	 * @param vnetId
	 * @return
	 * @throws Exception
	 */
	public String publish(String secret, String endpoint, int vnetId) throws Exception;

	/**
	 * unpublish vnet
	 * 
	 * @param client
	 * @param vnetId
	 * @return
	 * @throws Exception
	 */
	public String unpublish(String secret, String endpoint, int vnetId) throws Exception;

}
